﻿#define _CRT_SECURE_NO_WARNINGS
/*
不创建第三个变量使a b的数值进行交换
*/
#include<stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int c = 0;
	printf("a=%d\nb=%d\n",a, b);
	//正数的原码、反码、补码都一样
	//负数的原码转换成成补码：符号位不变其余的依次取反得到反码，接着在反码的基础上加1得到补码
	//a 的补码        00000000 00000000 00000000 00001010
	//b 的补码        00000000 00000000 00000000 00010100
	//a=a^b           00000000 00000000 00000000 00011110
	//b=a^b           00000000 00000000 00000000 00001010
	//a=a^b           00000000 00000000 00000000 00010100
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("a=%d\nb=%d", a, b);

	return 0;
}